home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 May / EnigmA AMIGA RUN 18 (1997)(G.R. Edizioni)(IT)[!][issue 1997-05][EAR-CD II].iso / earcd / misc / emu / arosdev.lha / AROS / workbench / libs / initstruct.h < prev    next >
C/C++ Source or Header  |  1997-02-03  |  1KB  |  43 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: initstruct.h,v 1.6 1997/02/03 14:20:57 digulla Exp $
  4.  
  5.     Desc: Defines and macros to create and fill an inittable
  6.     Lang: english
  7. */
  8. #ifndef _INITSTRUCT_H_
  9. #define _INITSTRUCT_H_
  10. #include <aros/machine.h>
  11.  
  12. typedef BYTE type_B;
  13. typedef WORD type_W;
  14. typedef LONG type_L;
  15.  
  16. #define S_DEF(i,l) union                                                        \
  17.            {                                \
  18.              struct _##i { l } _l;                    \
  19.              char _s[(sizeof(struct _##i)+AROS_LONGALIGN-1)&~(AROS_LONGALIGN-1)]; \
  20.            } _##i
  21.  
  22.  
  23. #define CODE_B 0x20
  24. #define CODE_W 0x10
  25. #define CODE_L 0x00
  26.  
  27. #define S_CPY(i,n,t)      S_DEF(i,UBYTE _cmd; type_##t _data[(n)];)
  28. #define S_REP(i,n,t)      S_DEF(i,UBYTE _cmd; type_##t _data;)
  29. #define S_CPYO(i,n,t)     S_DEF(i,UBYTE _cmd; UBYTE _ofst; type_##t _data[(n)];)
  30. #define S_CPYO24(i,n,t)   S_DEF(i,ULONG _cmd; type_##t _data[(n)];)
  31. #define S_END(i)          UBYTE _##i
  32. #define I_CPY(n,t)        CODE_##t|((n)-1)
  33. #define I_REP(n,t)        0x40|CODE_##t|((n)-1)
  34. #define I_CPYO(n,t,o)     0x80|CODE_##t|((n)-1), (o)
  35. #if AROS_BIG_ENDIAN
  36. #define I_CPYO24(n,t,o)   (0xc0|CODE_##t|((n)-1))<<24|(o)
  37. #else
  38. #define I_CPYO24(n,t,o)   0xc0|CODE_##t|((n)-1)|(o)<<8
  39. #endif
  40. #define I_END()           0
  41.  
  42. #endif
  43.